<?php
/**
 * bs 极简随手记
 * ============================================================================
 * 版权所有 2024-2099 www.alipay168.cn，并保留所有权利。
 * 网站地址: https://www.alipay168.cn
 * ============================================================================
 * Author: 草上飞
 * Email: wei@alipay16.cn
 * QQ: 2719875001
 * Date: 2025/1/3
 * 描述:
 */

namespace lib\exception;

use think\exception\Handle;
use think\exception\HttpException;
use think\exception\ValidateException;
use think\Response;
use Throwable;

class Http extends Handle
{
    public function render($request, Throwable $e): Response
    {
        bs_log([
            'code' => $e->getCode(),
            'msg' => $e->getMessage(),
            'file' => $e->getFile(),
            'line' => $e->getLine(),
            //'trace'=> $e->getTraceAsString()
        ], 'exception', 'error.log');
        if (config('app.app_debug')) {
            return parent::render($request, $e);
        }
        // 参数验证错误
        if ($e instanceof ValidateException) {
            data_return('系统服务忙碌中，请稍后再试！', 500);
        }

        // 请求异常
        if ($e instanceof HttpException && $request->isAjax()) {
            data_return('系统服务忙碌中，请稍后再试！', 500);
            // return response($e->getMessage(), $e->getStatusCode());
        }

        if ($e instanceof \Exception) {
            data_return('系统服务忙碌中，请稍后再试！', 500);
        }
        if ($e instanceof \Error) {
            data_return('系统服务忙碌中，请稍后再试！', 500);
        }
        if ($e instanceof \ErrorException) {
            data_return('系统服务忙碌中，请稍后再试！', 500);
        }

        if ($e instanceof \ErrorException) {
            data_return('系统服务忙碌中，请稍后再试！', 500);
        }

        // 其他错误交给系统处理
        return parent::render($request, $e);
    }

}
